Skip to content

feat: new-user default posture — egress allowed by default, init template fixed - #236

Merged
jkyberneees merged 3 commits into
mainfrom
feat/better-defaults
Sep 13, 2026
Merged

jkyberneees merged 3 commits into
mainfrom
feat/better-defaults

Conversation

@jkyberneees

Copy link
Copy Markdown
Contributor

Summary

New-user default posture: network_egress allows by default, and odek init --global no longer writes the global "action": "prompt" override that downgraded even safe/local_write to prompting. Red-first tests, adversarially reviewed, docs updated.

What changed

  • defaultActions: NetworkEgress: Prompt → Allowsafe and local_write already allowed; egress joins them for a friction-free start. system_write/persistence/unread_exec/code_execution/install still prompt; destructive/blocked/unknown still deny.
  • Init template: dropped "action": "prompt" (global override that neutered per-class defaults — every command prompted, unknown weakened deny→prompt) and the redundant network_egress pin. Existing user configs untouched (explicit action still wins).
  • Tests (RED-first): new TestInitTemplate_NoGlobalDangerousActionOverride + egress default pin; 4 tests that leaned on egress-prompt re-pinned (explicit config or system_write) preserving their original intent.
  • Docs: CONFIG.md class table + scheduler note, SECURITY.md default-posture (SSRF claim scoped honestly: dial guard covers browser/http_batch/web_search only — shell egress is unguarded), MIGRATION.md section, CLI.md example fixed.

Review findings (adversarial, all addressed)

  1. SECURITY.md overclaimed SSRF coverage for shell egress → claim scoped
  2. Scheduler: unattended cron egress now follows the allow default — documented with opt-out (schedules.dangerous.classes); flooring it is a posture decision left to the operator, flagged here
  3. CLI.md example showed old template → fixed

Verified: browser/web_search/http_batch consult ActionFor then SSRF-guard (action-independent); Telegram media approval and sub-agent lockdown unaffected; re-pinned tests non-vacuous; template field remains valid (NoDeadOrMissingKeys fine); localConfigTemplate irrelevant (project dangerous ignored).

Test evidence

internal/danger, internal/config, internal/loop, internal/mcpclient green; cmd/odek template/pillar/danger-desc tests green. Interactive tail covered by CI.

…it template no longer forces global prompt

- defaultActions: NetworkEgress prompt → allow (safe/local_write already allow)
- globalConfigTemplate: drop 'action': 'prompt' global override (it downgraded
  even safe/local_write to prompting — the biggest out-of-box friction bug)
  and the redundant network_egress pin
- tests: pinned contracts updated RED-first (egress default, template has no
  global override); approver/audit/allowlist tests re-pinned on system_write
  or explicit egress config so their intent survives the default change
- docs: CONFIG.md class table + scheduler note, SECURITY.md default posture
…atch/web_search (shell egress unguarded), fix CLI.md example template, MIGRATION sub-agent note
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
odek 0c4dea2 Commit Preview URL

Branch Preview URL
Sep 13 2026, 05:43 PM

@jkyberneees
jkyberneees merged commit 23f4ff4 into main Sep 13, 2026
10 checks passed
@jkyberneees
jkyberneees deleted the feat/better-defaults branch September 13, 2026 17:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant